iOS6対応 背景設定時の注意点
iOS5(Xcode4.4) で作成したプロジェクトを iOS6(Xcode4.5) に移行したときに、背景の設定方法でいくつか修正作業がありました。
今回は、その中から以下の2点について、内容を書き残しておこうと思います。
- UITableView の backgroundColor が使えなくなった。
- Group Table View Background Color が使えなくなった。
UITableView の backgroundColor が使えなくなった
iOS6 では、UITableView の背景色を変更する方法として backgroundColor が使えなくなっているので、
代わりに backgroundView を使用します。
iOS5 では、以下のように backgroundColor を使用して背景色を変更していました。
- (void)viewDidLoad { [super viewDidLoad]; // ここで、テーブルの背景色をダークグレーに変更する。 self.tableView.backgroundColor = [UIColor darkGrayColor]; }
これを iOS6 のデバイスで実行してみます。
警告やビルドエラーは発生せず動きましたが、背景色は変わりませんでした。
iOS6からは、背景色を変更するには backgroundView を使用します。
- (void)viewDidLoad { [super viewDidLoad]; // 背景用のUIViewを生成する。 UIView *bgView = [[UIView alloc] initWithFrame:self.tableView.frame]; // 背景用のUIViewのbackgroundColorを設定する。 bgView.backgroundColor = [UIColor darkGrayColor]; // この画面のtableViewのbackgroundViewに、背景用のUIViewを設定する。 self.tableView.backgroundView = bgView; }
では、実行します。
背景が変更されました。
このように iOS6 では、UITableView の背景色を変更したいときは、 backgroundView を使用して、背景画面を設定します。
Group Table View Background Color が使えなくなった
Xcode4.5(iOS6)のストーリーボードで、UIViewの背景に「Group Table View Background Color」を使用すると、「Deprecated」(非推奨)の警告が発生します。
実際に画面を見てみます。
画面左を見ると分かるように、警告が発生しています。
「Deprecated: Group Table View Background Color is deprecated in iOS 6.0.」
さらに、画面表示も透明になっていて、少しおかしくなっているようです。
次に、コードで設定してみた場合はどうなるのか試してみました。
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; }
警告やビルドエラーは発生せず動きましたが、背景は真っ暗になってしまいました。
非推奨というか、もう使えないようです。
さらに、宣言しているところを見てみると、コメントに「deprecated」と書かれていました。
+ (UIColor *)groupTableViewBackgroundColor; // This method will be deprecated during the 6.0 seed program
このように、iOS6では、UIViewの背景に「Group Table View Background Color」は使用できないようです。